若是想要了解 SDN OpenFlow 以及 P4 請不要吝嗇點擊喜歡或是訂閱我喔!(訂閱又不收費XD)
未來有機會也可以跟大家分享我當網管的辛酸血淚史,可以讓人解決問題時可以參考我的文章。
話不多說,我們就累狗!!
今天要講解的是 Basic Tunneling!!
這邊先給大家一個基本的 topology 這是最最最基本的 拓樸圖!
那這次的目標就是要添加對 basic tunneling protocol 的支援!
一般來說 switch 是透過 dst 的位置也就是目標 IP 進行 forwarding 的動作~
我們要做的事情定義一個新的 header 並加以封裝 packet,
目的就是在於要修改 switch 的 ID,以確定我的 dst 的 port 達到 tunnel 的目的。
那之前付的 reference 有付一個 basic_tunnel.p4的檔案可以提供大家去做修改!
原則上 Parser的 地方就是跟我們前幾天提到的地方一樣
parser MyParser(packet_in packet,
out headers hdr,
inout metadata meta,
inout standard_metadata_t standard_metadata) {
state start {
transition parse_ethernet;
}
state parse_ethernet {
packet.extract(hdr.ethernet);
transition select(hdr.ethernet.etherType) {
TYPE_IPV4 : parse_ipv4;
default : accept;
}
}
state parse_ipv4 {
packet.extract(hdr.ipv4);
transition accept;
}
}
我們的目標就是要去自定義自己所需要傳的switch 所以我們需要透過架 tunnel的方式來做
action myTunnel_forward(egressSpec_t port) {
pratice;
}
一樣先交給大家做練習,明天再公布解答!
完成之後 一樣到 該目錄底下
make run
xterm h1 h2
此時用 h2 開啟 receive.py這個檔案
./receive.py
並用 h1 開啟 send.py 這個檔案 並帶入 dst 的 IP 位置
./send.py 10.0.2.2 "Hello World!"
這樣子我們就可以看到該傳送者的資訊了
明天再公布要怎麼建立 tunnel~
在此付上我的 Reference,我將會以簡短白話的方式來講解 P4 這套語言,若是你/妳不嫌棄可以訂閱我的發文
每天就根據我自己了解的程度來做發文的動作,如果自己對於 P4也有興趣可以先來預習,那我們明天見!
Reference :
P4_turtorial
[(http://docs.google.com/presentation/d/1zliBqsS8IOD4nQUboRRmF_19poeLLDLadD5zLzrTkVc/edit#slide=id.g37fca2850e_6_1802)]